#pragma once
#include<vector>
#include<mutex>
#include<queue>
#include<condition_variable>
#include<functional>
#include<thread>
#include<atomic>
#include<future>
#include<unistd.h>
#include <sys/syscall.h>

class ThreadPool
{
public:
	ThreadPool(size_t threadnum); // 构造函数中启动threadnum个线程
	~ThreadPool(); //在析构函数中停止线程
	void addTask(std::function<void()> task); // 把任务添加到任务队列中

private:
    std::vector<std::thread> threads_; // 线程池的线程
    std::queue<std::function<void()>> tasksqueue_; // 任务队列
    std::mutex mutex_; // 互斥锁
    std::condition_variable condition_; // 条件变量
    std::atomic_bool stop_;
    
};